/*{
"CREDIT": "by zoidberg",
"ISFVSN": "2",
"CATEGORIES": [
"Color Effect"
],
"INPUTS": [
{
"NAME": "inputImage",
"TYPE": "image"
},
{
"NAME": "slideAmt",
"LABEL": "slide amount",
"TYPE": "color",
"DEFAULT": [
0.0,
0.0,
0.0,
0.0
]
},
{
"NAME": "reflection",
"TYPE": "bool",
"DEFAULT": 0.0
}
]
}*/
void main() {
vec4 srcPixel = IMG_THIS_PIXEL(inputImage);
if (reflection == true) {
vec4 outPixel;
outPixel.rgb = srcPixel.rgb - slideAmt.rgb;
outPixel.a = srcPixel.a + slideAmt.a; // alpha behaves the same in both modes (just easier to work with)
gl_FragColor.x = (outPixel.x<0.0) ? outPixel.x+1.0 : outPixel.x;
gl_FragColor.y = (outPixel.y<0.0) ? outPixel.y+1.0 : outPixel.y;
gl_FragColor.z = (outPixel.z<0.0) ? outPixel.z+1.0 : outPixel.z;
//gl_FragColor.a = (outPixel.a<0.0) ? outPixel.a+1.0 : outPixel.a;
gl_FragColor.a = (outPixel.a>1.0) ? outPixel.a-1.0 : outPixel.a;
}
else {
vec4 outPixel = srcPixel+slideAmt;
gl_FragColor.x = (outPixel.x>1.0) ? outPixel.x-1.0 : outPixel.x;
gl_FragColor.y = (outPixel.y>1.0) ? outPixel.y-1.0 : outPixel.y;
gl_FragColor.z = (outPixel.z>1.0) ? outPixel.z-1.0 : outPixel.z;
gl_FragColor.a = (outPixel.a>1.0) ? outPixel.a-1.0 : outPixel.a;
}
}